namespace feng3d
{

    // test
    var t = Triangle3.random(10);
    // var t = new Triangle3(new Vector3(0, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 0, 2));
    var bp = Vector3.random(3);
    bp.z = 1 - bp.x - bp.y;
    // bp.scaleNumber(1 / (bp.x + bp.y + bp.z));

    var num = 1000000;

    var p = t.getPoint(bp);

    console.time("getBarycentricCoordinates");
    for (var i = 0; i < num; i++)
    {
        var bp1 = t.getBarycentricCoordinates(p);
    }
    console.timeEnd("getBarycentricCoordinates");

    console.time("getBarycentricCoordinates1");
    for (var i = 0; i < num; i++)
    {
        var bp2 = t.getBarycentricCoordinates1(p);
    }
    console.timeEnd("getBarycentricCoordinates1");
    // console.time("getBarycentricCoordinates1");
    // for (var i = 0; i < num; i++)
    // {
    //     var bp2 = t.getBarycentricCoordinates1(p);
    // }
    // console.timeEnd("getBarycentricCoordinates1");
    // assert.ok(bp.equals(bp2));

    console.time("getBarycentricCoordinates2");
    for (var i = 0; i < num; i++)
    {
        var bp2 = t.getBarycentricCoordinates2(p);
    }
    console.timeEnd("getBarycentricCoordinates2");

    console.time("getBarycentricCoordinates3");
    for (var i = 0; i < num; i++)
    {
        var bp3 = t.getBarycentricCoordinates3(p);
    }
    console.timeEnd("getBarycentricCoordinates3");

    // firefox
    // getBarycentricCoordinates：975 毫秒
    // getBarycentricCoordinates1：477 毫秒
    // getBarycentricCoordinates2：149 毫秒
    // getBarycentricCoordinates3：132 毫秒

    // chrome
    // getBarycentricCoordinates: 320.44384765625ms
    // getBarycentricCoordinates1: 30.6181640625ms
    // getBarycentricCoordinates2: 28.26708984375ms
    // getBarycentricCoordinates3: 20.57421875ms

}